package com.macro.mall.dto.pms;

import com.macro.mall.common.api.dto.BaseRequestDto;
import io.swagger.annotations.ApiModelProperty;
import lombok.Getter;
import lombok.Setter;
import lombok.ToString;
import lombok.experimental.Accessors;

import javax.validation.Valid;
import javax.validation.constraints.NotBlank;
import java.math.BigDecimal;
import java.time.LocalDateTime;

/**
 * 新增商品信息请求Dto
 *
 * @author xuyanjun
 * @date 2019-12-22
 */
@Valid
@Getter
@Setter
@ToString
@Accessors(chain = true)
public class InsertProductReqDto extends BaseRequestDto {


    /**
     * 品牌id
     */
    @ApiModelProperty(value = "品牌id")
    private Long brandId;

    /**
     * 商品类目id
     */
    @ApiModelProperty(value = "商品类目id")
    private Long productCategoryId;

    /**
     * 运费模板id
     */
    @ApiModelProperty(value = "运费模板id")
    private Long feightTemplateId;

    /**
     * 商品属性类目id
     */
    @ApiModelProperty(value = "商品属性类目id")
    private Long productAttributeCategoryId;

    /**
     * 商品名称
     */
    @ApiModelProperty(value = "商品名称")
    @NotBlank(message = "商品名称不能为空。")
    private String name;

    /**
     * 商品图片
     */
    @ApiModelProperty(value = "商品图片")
    private String pic;

    /**
     * 货号
     */
    @ApiModelProperty(value = "货号")
    @NotBlank(message = "货号不能为空。")
    private String productSn;

    /**
     * 删除状态：0->未删除；1->已删除
     */
    @ApiModelProperty(value = "删除状态：0->未删除；1->已删除")
    private Integer deleteStatus;

    /**
     * 上架状态枚举: 0:DOWN:下架 1:UP:上架
     */
    @ApiModelProperty(value = "上架状态枚举: 0:DOWN:下架 1:UP:上架")
    private Integer publishStatus;

    /**
     * 新品状态:0->不是新品；1->新品
     */
    @ApiModelProperty(value = "新品状态:0->不是新品；1->新品")
    private Integer newStatus;

    /**
     * 推荐状态；0->不推荐；1->推荐
     */
    @ApiModelProperty(value = "推荐状态；0->不推荐；1->推荐")
    private Integer recommandStatus;

    /**
     * 审核状态：0->未审核；1->审核通过
     */
    @ApiModelProperty(value = "审核状态：0->未审核；1->审核通过")
    private Integer verifyStatus;

    /**
     * 排序
     */
    @ApiModelProperty(value = "排序")
    private Integer sort;

    /**
     * 销量
     */
    @ApiModelProperty(value = "销量")
    private Integer sale;

    /**
     * 销售价格
     */
    @ApiModelProperty(value = "销售价格")
    private BigDecimal price;

    /**
     * 促销价格
     */
    @ApiModelProperty(value = "促销价格")
    private BigDecimal promotionPrice;

    /**
     * 赠送的成长值
     */
    @ApiModelProperty(value = "赠送的成长值")
    private Integer giftGrowth;

    /**
     * 赠送的积分
     */
    @ApiModelProperty(value = "赠送的积分")
    private Integer giftPoint;

    /**
     * 限制使用的积分数
     */
    @ApiModelProperty(value = "限制使用的积分数")
    private Integer usePointLimit;

    /**
     * 副标题
     */
    @ApiModelProperty(value = "副标题")
    private String subTitle;

    /**
     * 商品描述
     */
    @ApiModelProperty(value = "商品描述")
    private String description;

    /**
     * 市场价
     */
    @ApiModelProperty(value = "市场价")
    private BigDecimal originalPrice;

    /**
     * 库存
     */
    @ApiModelProperty(value = "库存")
    private Integer stock;

    /**
     * 库存预警值
     */
    @ApiModelProperty(value = "库存预警值")
    private Integer lowStock;

    /**
     * 单位
     */
    @ApiModelProperty(value = "单位")
    private String unit;

    /**
     * 商品重量，默认为克
     */
    @ApiModelProperty(value = "商品重量，默认为克")
    private BigDecimal weight;

    /**
     * 是否为预告商品：0->不是；1->是
     */
    @ApiModelProperty(value = "是否为预告商品：0->不是；1->是")
    private Integer previewStatus;

    /**
     * 以逗号分割的产品服务：1->无忧退货；2->快速退款；3->免费包邮
     */
    @ApiModelProperty(value = "以逗号分割的产品服务：1->无忧退货；2->快速退款；3->免费包邮")
    private String serviceIds;

    /**
     * 关键字
     */
    @ApiModelProperty(value = "关键字")
    private String keywords;

    /**
     * note
     */
    @ApiModelProperty(value = "note")
    private String note;

    /**
     * 画册图片，连产品图片限制为5张，以逗号分割
     */
    @ApiModelProperty(value = "画册图片，连产品图片限制为5张，以逗号分割")
    private String albumPics;

    /**
     * 详情标题
     */
    @ApiModelProperty(value = "详情标题")
    private String detailTitle;

    /**
     * 详情描述
     */
    @ApiModelProperty(value = "详情描述")
    private String detailDesc;

    /**
     * 产品详情网页内容
     */
    @ApiModelProperty(value = "产品详情网页内容")
    private String detailHtml;

    /**
     * 移动端网页详情
     */
    @ApiModelProperty(value = "移动端网页详情")
    private String detailMobileHtml;

    /**
     * 促销开始时间
     */
    @ApiModelProperty(value = "促销开始时间")
    private LocalDateTime promotionStartTime;

    /**
     * 促销结束时间
     */
    @ApiModelProperty(value = "促销结束时间")
    private LocalDateTime promotionEndTime;

    /**
     * 活动限购数量
     */
    @ApiModelProperty(value = "活动限购数量")
    private Integer promotionPerLimit;

    /**
     * 促销类型：0->没有促销使用原价;1->使用促销价；2->使用会员价；3->使用阶梯价格；4->使用满减价格；5->限时购
     */
    @ApiModelProperty(value = "促销类型：0->没有促销使用原价;1->使用促销价；2->使用会员价；3->使用阶梯价格；4->使用满减价格；5->限时购")
    private Integer promotionType;

    /**
     * 品牌名称
     */
    @ApiModelProperty(value = "品牌名称")
    private String brandName;

    /**
     * 商品分类名称
     */
    @ApiModelProperty(value = "商品分类名称")
    private String productCategoryName;

    /**
     * 佣金金额
     */
    @ApiModelProperty(value = "佣金金额")
    private BigDecimal commission;

}
